## Специальные отладочные функции

Флаг `--debug-templates` включает расширенный режим отладки Go-шаблонов в werf.

В этом режиме:
-	Часть ошибок становится более подробной, включая дополнительный контекст, который скрыт в обычном режиме.
-	Становятся доступны специальные функции для отладки шаблонов.
- Появляется возможность вывода отладочной информации в лог без влияния на результат шаблонизации.

> Подробный формат ошибок включается при использовании `--debug-templates`, но отключён в обычном режиме, чтобы пользователь случайно не раскрыл потенциально чувствительные данные (например, секреты или внутренние значения).

Ниже приведены сценарии, в которых эти функции могут быть полезны, а также их поведение в зависимости от режима отладки.

### Отобразить произвольную строку в логе

Вы можете вставить сообщения в лог на произвольных этапах шаблонизации с помощью `printf_debug`. Это удобно для отслеживания значений переменных, выполнения условий и порядка шаблонизации.

* **С `--debug-templates`**: сообщение выводится в лог, не влияет на результат шаблонизации;
* **Без `--debug-templates`**: функция ничего не делает.

Пример:
{% raw %}
```bash
{{ printf_debug (printf "Current value: %v" .Values.someVar) }}
```
{% endraw %}

### Отобразить дамп любой структуры в логе

Если нужно увидеть значение переменной, особенно сложной (например, `.Values` или `$`), используйте `dump_debug`.

* **С `--debug-templates`**: структура значения логируется в человекочитаемом виде, не влияет на результат шаблонизации;
* **Без `--debug-templates`**: функция ничего не делает.

Пример:
{% raw %}
```bash
{{ dump_debug $.Values.werf }}
```
{% endraw %}

### Отладка функции `include`

Для отладки функций `include`, замените их на `include_debug` и включите режим отладки шаблонов с `--debug-templates`. Теперь, во время шаблонизации, в логах будет отображаться отладочная информация о каждом вызове `include`.

* **С `--debug-templates`**: работает как `include`, но также логирует имя шаблона, его содержимое и результат его шаблонизации;
* **Без `--debug-templates`**: работает как обычный `include`.

Пример:
{% raw %}
```bash
{{ include_debug "my-template" . }}
```
{% endraw %}

### Отладка функции `tpl`

Для отладки функций `tpl`, замените их на `tpl_debug` и включите режим отладки шаблонов с `--debug-templates`. Теперь, во время шаблонизации, в логах будет отображаться отладочная информация о каждом вызове `tpl`.

* **С `--debug-templates`**: работает как `tpl`, но также логирует переданную строку-шаблон и результат шаблонизации;
* **Без `--debug-templates`**: работает как обычный `tpl`.

Пример:
{% raw %}
```bash
{{ tpl_debug "{{ .Values.env }}" . }}
```
{% endraw %}
